package lt2779

import "sort"

// 根据题目对子序列的定义，我们知道元素的顺序对数组的美丽值无影响，因此我们先对数组 nums\textit{nums}nums 进行排序。假设数组的最大美丽值对应的相等元素为 xxx，那么经过任意操作后，可以变为 xxx 的元素范围为 [x−k,x+k][x - k, x + k][x−k,x+k]，对应排序后数组的一个连续子数组。因此题目等价于找到最大最小值之差小于等于 2k2k2k 的最长连续子数组，该子数组的长度即为数组的最大美丽值。
func maximumBeauty(nums []int, k int) int {
	res,n := 0, len(nums)
	sort.Ints(nums)
	for i,j :=0,0; i<n;i++ {  // 左端点j,右端点i
		for nums[i]-2*k > nums[j] {    // 求得nums[i] - nums[j] <= 2k
			j++;
		}
		res = max(res, i-j+1)
	}
	return res
}